从Android Q看安卓系统的授权机制的三次重大演进(DPO社群成员观点)
编者按:
本公号在刊登DPO沙龙和相关社群活动的同时,还将刊登DPO社群成员的精彩文章。本篇作者为一线互联网公司数据保护法律顾问黑啤。
正文:
昨日,安卓向开发者发布了Android Q版,最大的亮点集中在隐私安全和智能交互两方面,其中在隐私安全方面Android Q增加了外部存储策略变更、位置权限的后台访问限制、后台应用(不限于摄像头、麦克风等)的启动限制、设备识别码限制这几项变更。
这次调整是谷歌去年年初发动的Project Strobe的一部分,其中对于位置权限的后台访问限制和设备码识别限制也再次释放了安卓收敛系统内第三方应用的数据访问策略的信号,谷歌称未来在还将出台其他API平台数据开放策略的进一步措施,并给开发者调整和升级应用和服务的适应期。
这也标志着安卓系统的授权机制的又一分水岭,至今为止,安卓系统的授权机制经历了三次重大演进,我们简单总结如下:
第一代
安卓5.0及此前的授权机制是安装时一揽子授权(install-time request)。
安卓2.3到5.0的权限授权在不断演进,但总体而言授权机制是相对开放的,用户在安装应用时即申请全部权限,用户点击接受(accept),应用即可以一揽子获取全部权限,用户点击拒绝(deny)则直接退出安装进程。
为了给用户更多控制项,安卓4.4后,在应用安装完成过后,用户可以在设置设置里逐项随时开启或关闭授权(enable and disable permissions one-by-one in systemsettings)。
第二代
安卓6.0及此后的授权机制是敏感权限即时逐一授权(run time request)。
安卓6.0 (2015年9月底正式发布)是个分水岭,它把权限分为两类,一类是普通权限(normal permission),即对用户隐私或设备运行不会产生重大风险的权限,一类是敏感权限(dangerous permission),即对用户隐私或设备运行有潜在影响的权限。系统要求应用获取敏感权限时要获得用户主动授权,并采取了动态授权的机制,即当应用需要使用到敏感权限的时候,会弹出一个即时的交互框让用户选择同意或拒绝。用户可以授予或拒绝授予权限,且当用户拒绝特定授权请求时,应用仍可以继续运行其他功能。
第三代
Project Strobe及安卓Q后的授权机制要求调用权限需要有必要的业务场景,并增加了加密、泛化等安全举措。
2018年10月8日,谷歌通过Safety and Security官网发表声明称年初谷歌内部发起了代号为Strobe的隐私项目,该项目由100多位工程师、产品经理和法务组成,主要审查谷歌向其生态系统中的开发者开放的数据权限,其中安卓系统内第三方应用的数据访问策略也是审查重点。
2018年10月20日,Strobe项目组宣布了第一批收敛举措,其将限制应用在安卓设备上接受通话日志和短信权限的能力,并不再通过安卓通讯录API提供联系人互动数据,这些举措都是针对社交属性的权限进行的。
其中读取通讯录、读取短信这两类敏感权限,仅被用户选择为默认拨打电话或通讯类APP(包括语音邮箱或类似APP)才能调用。对于读取联系人权限,谷歌目前将仅提供基本的联系数据,比如通讯APP仅能向用户提供最近的联系数据,几个月后安卓将彻底关闭联系人API。
刚刚公布安卓Q Beta版中,再次丰富了用户对权限的细粒度控制权,APP仅能在具体场景发生时获取权限:
用户可进一步细粒度控制应用访问设备地理位置的时间,参照IOS系统对地理位置的授权机制,在“始终访问”外,安卓系统也增加了“仅在使用该应用期间”才能获取设备当前位置信息得选项,确保用户可以自行控制是否允许后台应用获知地理位置(在限制收集地理位置信息之外,苹果还在《IOS开发者隐私条例》增加了限制开发者分享地理位置信息的规定,即未经用户的明确同意,或用途未经过批准时,应用程序禁止将用户位置数据传输给第三方);
Android Q 贯彻了PBD(privacyby default)的精神,原则上将禁止后台应用未经通知用户就直接启动(Android O已经要求启动麦克风、摄像头权限时进行增强提示,Android P直接禁止后台应用启用麦克风、摄像头及其他传感器访问权限,Android Q进一步扩大了对应用在后台启动的限制范围)。若后台应用运行的程序需启用,需要使用高优先级通知,并提供一个全屏 intent。否则,一旦应用程序尝试从后台运行,系统将会向用户发送警告消息;
为了让用户更好的控制个人文件,Android Q改变了应用程序访问设备外部存储中个人文件的方式,将读取外部存储空间(READ_EXTERNAL_STORAGE)和写入外部存储空间( WRITE_EXTERNAL_STORAGE)两个权限变更为更细粒度的的控制项,用户可细粒度地设置允许应用访问的共享文件的媒介类型(照片、视频或音频),从而让应用访问的数据类型和数量有必要性。并为每个应用程序单独设立了存储沙盒,应用程序读取自身的文件不需要特别授权,其他应用程序则无法直接访问;
公布了《唯一标识符最佳做法》,原则上建议避免识别更容易关联到特定个人的硬件标识符,而是使用实例 ID,也可以在安装时创建自己的 GUID,以变进一步降低隐私全风险。应用必须具有READ_PRIVILEGED_PHONE_STATE 签名权限才能访问设备的唯一标识符,并在具体场景中推荐了如下最佳做法:
避免使用硬件标识符。您可以在大多数用例中避免使用 SSAID (Android ID) 和 IMEI 等硬件标识符,而必需功能也不会受到限制;
只为用户分析或广告用例使用广告 ID。使用广告 ID 时,务必遵守限制广告追踪标记,确保标识符无法与个人可识别信息 (PII) 建立关联,并避免桥接广告 ID 重置;
尽一切可能为防欺诈支付和电话以外的所有其他用例使用实例 ID 或私密存储的 GUID。对于绝大多数非广告用例,应使用实例 ID 或 GUID;
使用适合应用 API 以尽量降低隐私权风险。为高价值内容保护使用 DRM API,为滥用预防使用 Safety Net API。Safety net API 是能够确定设备真伪而又不会招致隐私权风险的最简单方法。
默认启用 MAC 地址随机化功能,当设备连接到不同的 Wi-Fi 网络时,系统会随机生成不同的 MAC 地址。但在 Android 9 Pie 中,该特性为附加功能,开发者可自行选择是否启用。
这次调整对安卓应用开发者将产生重大影响,开发者需要结合应用的核心功能,目标等因素具体评估影响和调整举措,其中在权限获取方面,在征得用户同意外,需要重点考虑权限与场景功能的对应性,确保权限的获取符合必要性原则。
关于DPO沙龙活动的有关情况,请见:
DPO社群成果
线下沙龙实录见:
线上沙龙见:
时评见:
DPO社群成员观点